package data;

import java.io.Serializable;
import java.util.ArrayList;

public class Lista implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private ArrayList<Produto> produtos;
	private String nome;
	private String owner;

	public Lista(String nome, String owner) {
		this.nome = nome;
		this.owner = owner;
		produtos = new ArrayList<Produto>();
	}
	
	public Lista(int id, String nome, String owner) {
		this.nome = nome;
		this.owner = owner;
		produtos = new ArrayList<Produto>();
	}
	
	public String getOwner() {
		return owner;
	}

	public void setOwner(String owner) {
		this.owner = owner;
	}
	
	public boolean add(Produto p){
		return produtos.add(p);
	}
	
	public boolean remove(Object p){
		return produtos.remove(p);
	}
	
	public Produto remove(int index){
		return produtos.remove(index);
	}
	
	public Produto get(int location) {
		return produtos.get(location);
	}
	
	public void clear(){
		produtos.clear();
	}
	
	public int size(){
		return produtos.size();
	}
	
	public String getNome(){
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public ArrayList<Produto> getProdutos() {
		return produtos;
	}

	public void setProdutos(ArrayList<Produto> produtos) {
		this.produtos = produtos;
	}
	
	@Override
	public String toString() {
		return nome;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		result = prime * result
				+ ((produtos == null) ? 0 : produtos.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		Lista other = (Lista) obj;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		if (produtos == null) {
			if (other.produtos != null)
				return false;
		} else if (!produtos.equals(other.produtos))
			return false;
		return true;
	}
}
